阅读更多
EWeb4J 是一款基于 Servlet/JDBC 构建的轻量级 Web 开发框架,它不仅融合了 SSH 的核心优点(全栈式),而且提供了诸如模块化、热加载、多数据源、RESTful等非常吸引人的特性。它小巧灵活,遵守约定优于配置的原则。目前 EWeb4J 的最新版本为 1.9.1


Github地址:https://github.com/laiweiwei/eweb4j-framework

为了使大家对 EWeb4J 有进一步的了解,本期我们采访了该框架的作者赖伟威。

ITeye期待并致力于为国内优秀的开源项目提供一个免费的推广平台,如果你和你的团队希望将自己的开源项目介绍给更多的开发者,或者你希望我们对哪些开源项目进行专访,请告诉我们,发站内短信给ITeye管理员或者发邮件到webmaster@iteye.com即可。

先来个自我介绍吧! Top

我叫赖伟威,网名“像风一样自由”,今年刚毕业,目前在一家深圳创业小公司工作,主方向是 Java + Web。



我的邮箱是:l.weiwei@163.com
我的博客是:http://laiweiweihi.iteye.com
我的微博是:http://weibo.com/weiweimiss

EWeb4J 是什么?有哪些功能? Top

EWeb4J 是一个基于 Servlet/JDBC 构建的轻量级 Java Web 开发框架。它可以代替 SSH 来开发一个完整的 Web 应用程序。专注于少侵入、少配置、松耦合架构风格的 Web 应用程序开发。EWeb4J 的目标是让 Java Web 开发更加简单。

Github地址:https://github.com/laiweiwei/eweb4j-framework

EWeb4J的特点如下:

  • 约定优于配置,配置覆盖约定
  • POJO式的编程。再也不用 “被继承” 某个类,不用 “被实现” 某个接口
  • Full-Stack
  • RESTful (兼容JAX-RS 部分实现)
  • MVC(路由规则/验证器/拦截器/文件上传下载/JSP、Json、Xml、FreeMarker、Velocity等)吸收了Play、Struts、SpringMVC等框架的特点
  • Simple IOC(setter注入,构造器注入,@Ioc注解注入)
  • ActiveRecord 支持
  • JPA标准下的多数据源、表关系、多表查询、分页、链式编程等,简单又实用的ORM
  • JDBC模板、事务模板
  • K-V配置文件支持
  • 国际化支持
  • 日志支持
  • MVC\ORM\IOC 各个模块自由开闭
  • 自定义扫描加载Jar包
  • 同步发布一个在线演示项目SolidBase

开发EWeb4J的初衷是什么?毕竟已经有很多现成的框架了。 Top

首先,我是从2010年开始开发此框架,那时候我还在读大二下学期,我们刚学习JSP/Servlet/JDBC不久,还没接触其他框架。

记得那时候我们老师要求做一个简单的数据库应用——学生管理系统,用JDBC来实现。当时我在使用JDBC的时候感觉到重复的代码特别多(这一点所有初学者都应该感同身受吧),而我自己说实话有些封装强迫症,于是就自己把JDBC封装成一个微型框架,那时候取了个名字EasyDAO(现在应该还能搜索到),还在我们学校的BBS论坛发布了。再后来,添加了Servlet扩展,那时候开始接触到部分框架了,网上学习了不少它们的思想,觉得蛮有意思就想模仿着做一个,也许是那时候年少,于是一个新的轮子——EWeb4J第一个版本就出来了。

后来不断地接触新的东西——Struts、Hibernate、Spring、SpringMVC、Nutz、SimpleFramework、JDONFramework、GRails、Play等等。看到好多前辈都在说不要重复造轮子,那时候心里确实有些动摇,但是到现在还是坚持了下来。我这样想,造轮子没什么不好,我这么年轻,我既然喜欢这么做,我就这么做吧,何必想太多。

到现在,我开始寻找EWeb4J与其他框架不同的特点,并且会为此一直努力下去!

与其他框架相比,EWeb4J的优势或特点是什么? Top

  • 松耦合,解放程序员,再也不用“被实现”某个类,“被实现”某个接口,完全是POJO的编程。
  • 自定义加载哪些JAR包
  • 未来的模块化

EWeb4J的性能、扩展性如何? Top

关于性能,目前还没有具体的性能报告,期待大家的使用、测试和反馈。

关于EWeb4J的扩展性,EWeb4J可以:

  • 基于Servlet/JDBC的薄封装,没有一级/二级缓存,没有懒加载
  • 可以自定义加载哪些JAR包
  • 未来会支持模块化
还是比较容易扩展的。

谈谈EWeb4J-SlidBase!是如何实现的? Top

SolidBase是一个使用EWeb4J开发的基础功能平台。

演示地址:http://210.38.137.96/solidbase/main
Github地址:https://github.com/laiweiwei/eweb4j-solidbase



SolidBase的实现:

  • 前端使用DWZ+JSP(感谢DWZ的无私奉献)。
  • 后端使用 EWeb4J 做底层框架,使用了MVC、ORM、IOC、Properties等功能。
  • 权限参考了RBAC0 模型 + REST架构风格思想来实现,可以自定义权限。
  • 功能模块包括但不限于菜单管理、部门管理、用户管理、角色管理、权限管理。

EWeb4J目前的开发人员情况?目前的版本发布周期? Top

目前就我一人,已确定加入的有若干人,但都因为工作繁忙一直都是我一个人solo。

发布周期不确定,一般是几个月左右。

其他开发者如何交流、反馈、参与贡献? Top

可以通过QQ群和Github来交流、反馈,早期还使用Google Code。

QQ群:216125802
Github:https://github.com/laiweiwei/eweb4j-framework
Google Code:http://code.google.com/p/eweb4j/

接下来打算写一系列的博客,作为EWeb4J的开发文档。

EWeb4J 采用什么开源协议? Top

EWeb4J 采用 Apache2.0 协议,对于商业使用没有什么限制。

EWeb4J 未来的发展计划? Top

  • 完善文档,会专门写一系列博客
  • 模块化
  • 热部署
  • 完善JPA标准的支持
  • 完善JAX-RS标准的支持
  • 将SolidBase做成一个企业可用的CMS
  • 大小: 98.9 KB
  • 大小: 55.6 KB
  • 大小: 61.7 KB
  • 大小: 12.7 KB
  • 大小: 33.6 KB
  • 大小: 101.1 KB
  • 大小: 25.4 KB


评论 共 42 条
42 楼 woshiluotao 2014-08-04 15:55
期待你能更完善,感想更要敢做
41 楼 laiweiweihi 2013-05-28 18:25
zidafone 写道
有可以直接import到myeclipse的demo吗?


https://github.com/laiweiwei/SolidBase
40 楼 zidafone 2013-05-23 11:25
有可以直接import到myeclipse的demo吗?
39 楼 laiweiweihi 2013-04-16 22:40
vincentedlin 写道
过了一遍运用这个框架写的代理,感觉过于繁琐。
建议大于去看下Spring MVC3,专注于业务的零配置、全注释的框架。

你好,本框架暂时还没对代理作支持哦
38 楼 vincentedlin 2013-04-15 11:43
过了一遍运用这个框架写的代理,感觉过于繁琐。
建议大于去看下Spring MVC3,专注于业务的零配置、全注释的框架。
37 楼 weileniweilewo 2013-03-15 08:59
楼主这种精神值的我们好好学习。
36 楼 amb_hbj 2013-01-22 20:08
以下配置为啥不行?,驱动包都加了。

<beans>
<dataSource dsName="myDBInfo">
<dataBaseType>MSSQL2005</dataBaseType>
<property key="driverClass" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<property key="jdbcUrl" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" />
<property key="user" value="sa" />
<property key="password" value="sa" />
<property key="initialPoolSize" value="5" />
<property key="maxPoolSize" value="50" />
<property key="minPoolSize" value="1" />
<property key="acquireIncrement" value="5" />
<property key="idleConnectionTestPeriod" value="60" />
<property key="maxIdleTime" value="3000" />
<property key="autoCommitOnClose" value="true" />
<property key="preferredTestQuery" value="" />
<property key="testConnectionOnCheckout" value="false" />
<property key="testConnectionOnCheckin" value="false" />
<property key="acquireRetryAttempts" value="5" />
<property key="acquireRetryDelay" value="1000" />
<property key="breakAfterAcquireFailure" value="false" />
<property key="checkoutTimeout" value="3000" />

</dataSource>
</beans>
35 楼 amb_hbj 2013-01-22 17:23
大哥,不支持SqlServer 吗?
34 楼 lshhjxlj 2013-01-13 19:10
现在框架已经到了泛滥成灾的地步了,说实话听到“框架”两字就蛋疼啊!
33 楼 kaibo_88 2012-12-28 07:38
欣赏有想法并努力实践的人。支持!
32 楼 greemranqq 2012-12-24 10:30
你大二 就开始写了啊,真厉害。你现在工作 多久了呢? 我现在 也想 写自己的东西,但是 老感觉,思路不清晰
31 楼 laiweiweihi 2012-12-20 13:17
amb_hbj 写道
经常报这个错,但不影响功能,望调整一下 呵呵,对了 现在支持sqlserver oracle数据库吗?:

警告: BasicResourcePool: An idle resource is broken and will be purged.
java.sql.SQLException: Connection is invalid
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.testPooledConnection(C3P0PooledConnectionPool.java:224)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.refurbishIdleResource(C3P0PooledConnectionPool.java:147)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1396)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:368)
2012-12-20 10:42:51 com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask run
警告: BasicResourcePool: An idle resource is broken and will be purged.
java.sql.SQLException: Connection is invalid
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.testPooledConnection(C3P0PooledConnectionPool.java:224)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.refurbishIdleResource(C3P0PooledConnectionPool.java:147)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1396)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:368)

这个是C3P0的警告信息。
30 楼 amb_hbj 2012-12-20 10:49
经常报这个错,但不影响功能,望调整一下 呵呵,对了 现在支持sqlserver oracle数据库吗?:

警告: BasicResourcePool: An idle resource is broken and will be purged.
java.sql.SQLException: Connection is invalid
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.testPooledConnection(C3P0PooledConnectionPool.java:224)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.refurbishIdleResource(C3P0PooledConnectionPool.java:147)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1396)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:368)
2012-12-20 10:42:51 com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask run
警告: BasicResourcePool: An idle resource is broken and will be purged.
java.sql.SQLException: Connection is invalid
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.testPooledConnection(C3P0PooledConnectionPool.java:224)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1.refurbishIdleResource(C3P0PooledConnectionPool.java:147)
at com.mchange.v2.resourcepool.BasicResourcePool$AsyncTestIdleResourceTask.run(BasicResourcePool.java:1396)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:368)
29 楼 jungle323 2012-12-19 10:57
我就觉得看着眼熟…貌似在哪见过…想想,好像是海大08软件的师兄…师兄大神啊。。。。。。
28 楼 架构师 2012-12-17 09:40
写软件不怕重复,功能重复的软件多得是,还不是继续有人写。
27 楼 貌似掉线 2012-12-11 09:59
lintghi 写道
superhj1987 写道
所说的有点貌似在Spring MVC中都具有了。不过还是很欣赏作者这种钻研的精神的。自己当初就没有坚持下载写完一个框架。

对啊. 作者花了很多心血在上面. ps: 其实都在注解形式的SpringMVC出来前, EWEB4j就已经有相应的支持了.

很厉害,很励志。
26 楼 lintghi 2012-12-10 21:07
superhj1987 写道
所说的有点貌似在Spring MVC中都具有了。不过还是很欣赏作者这种钻研的精神的。自己当初就没有坚持下载写完一个框架。

对啊. 作者花了很多心血在上面. ps: 其实都在注解形式的SpringMVC出来前, EWEB4j就已经有相应的支持了.
25 楼 superhj1987 2012-12-10 09:49
所说的有点貌似在Spring MVC中都具有了。不过还是很欣赏作者这种钻研的精神的。自己当初就没有坚持下载写完一个框架。
24 楼 laiweiweihi 2012-12-06 18:32
youjianbo_han_87 写道
youjianbo_han_87 写道
的确很轻量级,下下来看看,然后再加一个缓存层就完美了。呵呵。

有跑起来它的示例程序 solidbase 吗?不管是从googlecode上,或者是git上下载的程序,运行都 java.lang.InstantiationException。

作者能否搞个完整的能运行的例子,而不是src搞个包,webapp又搞个包。


这里有1.9版本的下载,最新的还没发布所以只能从github获取自己build。
http://code.google.com/p/eweb4j/downloads/detail?name=eweb4j-solidbase-webapp-bundle.zip&can=2&q=#makechanges
23 楼 jwlsky 2012-12-06 16:44
22 楼 youjianbo_han_87 2012-12-06 16:26
youjianbo_han_87 写道
的确很轻量级,下下来看看,然后再加一个缓存层就完美了。呵呵。

有跑起来它的示例程序 solidbase 吗?不管是从googlecode上,或者是git上下载的程序,运行都 java.lang.InstantiationException。

作者能否搞个完整的能运行的例子,而不是src搞个包,webapp又搞个包。
21 楼 youjianbo_han_87 2012-12-06 14:08
的确很轻量级,下下来看看,然后再加一个缓存层就完美了。呵呵。
20 楼 啦登2010 2012-12-06 14:02
学习,学习。。。
19 楼 httpclient_bd 2012-12-06 12:21
要追求快、约定大于配置,为什么不用python呢。
18 楼 allloveend 2012-12-06 11:18
随便点了点,在一个表单里多选多个内容,然后点修改,弹出来页面内容的是最后选择的一个信息。但是如果我去掉其他的只剩下一个选项的时候,他并不是把选中的那个信息弹出来。而是弹出了我最后操作的一条,怪怪的。
17 楼 flqljh 2012-12-05 20:28
bluedest 写道
不管怎么说,支持有想法的人。

[/quaote]
支持开源
16 楼 flqljh 2012-12-05 20:27
bluedest 写道
不管怎么说,支持有想法的人。

15 楼 laiweiweihi 2012-12-05 16:51
o_o_0 写道
updateByFields exception

修改下 数据库表 t_user 的 status字段类型为varchar
14 楼 o_o_0 2012-12-05 13:52
updateByFields exception
13 楼 liaonanfeng88 2012-12-05 12:19
怎么,例子介绍,很少呀!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • spring 轻量级Javaweb开发框架

    spring适用于轻量级Javaweb开发,是非常实用的工具包,

  • 轻量级JavaWeb开发框架EWeb4J

    EWeb4J 是一款基于 Servlet/JDBC 构建的轻量级 Web 开发框架,它不仅融合了 SSH 的核心优点(全栈式),而且提供了诸如模块化、热加载、多数据源、RESTful等非常吸引人的特性。它小巧灵活,遵守约定优于配置的原则。...

  • JavaWeb轻量级开发全体验

    资源名称:Java Web轻量级开发全体验内容简介:《JavaWeb轻量级开发全体验》共2篇(分为18章):基础篇、框架技术篇。全书内容遵循“循序渐进”的原则,逐步深入,理论联系实际,内容通俗易懂,涵盖了当前JavaWeb...

  • 轻量级Java Web整合开发入门:Struts2+Hibernate4+Spring3.rar

    轻量级Java Web整合开发入门:Struts2+Hibernate4+Spring3

  • simple-framework:基于Servlet的轻量级JavaWeb框架的实现

    Simple-Framework使用文档​Simple-Framework是一种轻量级Java Web框架,可基于此框架进行简单的web开发。​本项目主要供学习交流使用,Email:简介​Simple-Framework是基于原生Servlet实现的一种轻量级Java Web框架...

  • 自己搭建轻量级javaWeb框架之mvc以及ioc

    自己搭建轻量级javaWeb框架之mvc以及ioc

  • autumn-framework:一款轻量级的JavaWeb框架

    Autumn 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发Swift、学习简单、功能强大、轻量级、易扩展。 有效提高web项目的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :) Autumn有如下主要特点 ...

  • JavaWeb 后台开发框架

    JavaWeb是基于 SpringBoot2+Layui2.5.6+Thymeleaf++Shiro+MybatisPlus 研发的权限(RBAC)及内容管理系统,致力于做更简洁的后台管理框架,包含系统管理、代码生成、权限管理、站点、广告、布局、字段

  • 轻松学JavaWeb开发之框架技术整合开发优秀PPT.pptx

    轻松学JavaWeb开发之框架技术整合开发优秀PPT.pptx

  • 深入理解JavaWeb开发技术:探索基于主流框架的最佳组合

    资源名称:深入理解JavaWeb开发技术:探索基于主流框架的最佳组合内容简介:《深入理解JavaWeb开发技术:探索基于主流框架的最佳组合》内容新颖、知识全面、讲解详细,可以帮助读者深入理解javaweb开发技术的基本...

  • Java_Web轻量级开发全体验

    《Java Web轻量级开发全体验》共2篇(分为18章):基础篇、框架技术篇。《Java Web轻量级开发全体验》内容遵循“循序渐进”的原则,逐步深入,理论联系实际,内容通俗易懂,涵盖了当前Java Web开发所流行的众多开发...

  • 基于 Java8 + Netty4 创造的轻量级、高性能、简洁优雅的Web框架

    Blade 是一款追求简约、高效的 Web 框架,让 JavaWeb 开发如虎添翼,在性能与灵活性上同时兼顾

  • 玩转JavaWeb应用开发:Play框架

    虽然目前有很多种JavaWeb应用开发框架,但Play框架是一种新兴的框架,可以帮助开发人员高效的构建 Web应用。本文详细介绍了Play框架的使用,包括模型层、控制层、视图层和HTTP路由等内容。通过本文的介绍,开发人员...

  • Javaweb开发学习路线及Java三大框架分享?共4页

    Javaweb开发学习路线及Java三大框架分享?共4页.pdf.zip

  • Javaweb-讨论课PPT-Web开发应用框架介绍与比较

    Web开发应用框架介绍与比较,分为四章进行展示:Django的python框架、Jfinal框架、Struts框架,以及最后章节对比与总结。末尾写出参考文献。 内容完整,图文表并茂,可用于JavaWeb讨论课展示。 文件仅供参考学习。

  • Python零基础30天速通(小白定制版)(完结)

    宣导片:开启Python进阶之路 30动漫番剧播放量影响因素分析1综合案例 29小红书卖货实力与用户分析1综合案例 28星巴克门店探索|Matplotlib实战 27詹姆斯哈登的制胜宝典1 Panads的使用 26一晚5万的酒店| Numpy的使用 25揭开数据分析的面纱1数据分析"三剑客"概述 24虎牙直播数据告诉你谁最火1案例篇 23我的音乐我做主1数据保存之csv和excel 22电竟| BeautifulSoup解析HTML 21对李焕英的评价1HTML基础 20我的美食我做主1爬虫介绍、requests请 19看我四十二变1内容提取和格式转换 18我的版权我做主1PDF就是这么帅 17婚礼策划师离不开你|亲爱的PPT 16运营部的烦恼1战胜Excel 15Up主的创作之路1 Python与word初次 14你的offer之选|邮件发送 13我的存在只为悦你1 Pillow图片处理 12你喜欢的电竟赛事大全1 Python的文件操作 11哈利波特的魔法棒|模块 10龙珠之赛亚人1面向对象基础 09大吉大利今晚吃鸡1特种兵的战场(项目案

  • 20240519基本完整

    20240519基本完整

  • MATLAB仿真项目-大数据源码-疲劳检测识别,可应用于疲劳驾驶监测,专注度检测等(高分期末大作业).rar

    本项目提供了一个基于MATLAB的疲劳检测识别仿真系统,旨在帮助计算机相关专业的在校学生、老师和企业员工更好地学习和实践大数据与人工智能技术。该项目可应用于疲劳驾驶监测、专注度检测等领域,具有较高的实用价值。 项目源码已经过运行测试,确保OK,可作为课程设计、毕业设计的优质资源。此外,我们还为您提供了一些网络相关资源,以便您在学习过程中进行参考。这些资源将帮助您更好地理解项目的原理和应用。 本项目的源码适用于初学者,即使是编程基础较弱的同学也能快速上手。同时,源码结构清晰,易于理解和修改。您可以在这个基础上进行二次开发,实现更多有趣的功能。 请放心下载使用,我们为您提供了详细的文档说明,以便您更好地了解和使用该项目。希望这个项目能为您提供实质性的帮助,祝您在学习和工作中取得更好的成绩!

  • 利用协同过滤算法,基于用户历史订单数据,对店铺的用户和商品进行推荐.zip

    协同过滤算法(Collaborative Filtering)是一种经典的推荐算法,其基本原理是“协同大家的反馈、评价和意见,一起对海量的信息进行过滤,从中筛选出用户可能感兴趣的信息”。它主要依赖于用户和物品之间的行为关系进行推荐。 协同过滤算法主要分为两类: 基于物品的协同过滤算法:给用户推荐与他之前喜欢的物品相似的物品。 基于用户的协同过滤算法:给用户推荐与他兴趣相似的用户喜欢的物品。 协同过滤算法的优点包括: 无需事先对商品或用户进行分类或标注,适用于各种类型的数据。 算法简单易懂,容易实现和部署。 推荐结果准确性较高,能够为用户提供个性化的推荐服务。 然而,协同过滤算法也存在一些缺点: 对数据量和数据质量要求较高,需要大量的历史数据和较高的数据质量。 容易受到“冷启动”问题的影响,即对新用户或新商品的推荐效果较差。 存在“同质化”问题,即推荐结果容易出现重复或相似的情况。 协同过滤算法在多个场景中有广泛的应用,如电商推荐系统、社交网络推荐和视频推荐系统等。在这些场景中,协同过滤算法可以根据用户的历史行为数据,推荐与用户兴趣相似的商品、用户或内容,从而提高用户的购买转化率、活跃度和社交体验。 未来,协同过滤算法的发展方向可能是结合其他推荐算法形成混合推荐系统,以充分发挥各算法的优势。

Global site tag (gtag.js) - Google Analytics